package com.itheima.d2_xml;

import java.io.BufferedWriter;
import java.io.FileWriter;

/**
 * 目标：如何使用程序把数据写出到 XML文件中去。
 *      推荐直接把程序里的数据拼接成xml格式，然后用IO流写出去
 * <?xml version="1.0" encoding="UTF-8" ?>
 * <book>
 *     <name>从入门到跑路</name>
 *     <author>dlei</author>
 *     <price>999.9</price>
 * </book>
 *
 * 补充知识，约束XML文件的编写[了解]:什么是约束XML文件的书写？
 *      就是限制XML文件只能按照某种格式进行书写。
 * 约束文档
 *      专门用来限制xml书写格式的文档，比如：限制标签、属性应该怎么写。
 * 约束文档的分类
 *      DTD文档
 *      Schema文档
 *
 * XML文档约束-DTD的使用（了解）
 *      需求：利用DTD约束文档，约束一个XML文件的编写。
 * ①：编写DTD约束文档，后缀必须是.dtd
 *  <!ELEMENT 书架 (书+)>
 *  <!ELEMENT 书 (书名,作者,售价)>
 *  <!ELEMENT 书名 (#PCDATA>
 *  <!ELEMENT 作者 (#PCDATA>
 *  <!ELEMENT 售价 (#PCDATA)>
 *  可以约束XML文件的编写，不能约束具体的数据类型
 * ②：在需要编写的XML文件中导入该DTD约束文档
 * ③：然后XML文件，就必须按照DTD约束文档指定的格式进行编写，否则报错！
 *
 * XML文档约束-schema的使用（了解）
 *      可以约束XML文件的编写、和数据类型
 *      需求：利用schema文档约束，约束一个XML文件的编写。
 * ①：编写schema约束文档，后缀必须是.xsd，具体的形式到代码中观看。
 * ②：在需要编写的XML文件中导入该schema约束文档
 * ③：按照约束内容编写XML文件的标签。
 */
public class Dom4JTest2 {
    public static void main(String[] args) {
        // 1、推荐直接把程序里的数据拼接成xml格式，然后用IO流写出去，使用一个StringBuilder对象来拼接XML格式的数据。
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");   //  \r\n换行
        sb.append("<book>\r\n");
        sb.append("\t<name>").append("从入门到跑路").append("</name>\r\n");   // 缩进：\t
        sb.append("\t<author>").append("dlei").append("</author>\r\n");
        sb.append("\t<price>").append(999.99).append("</price>\r\n");
        sb.append("</book>");

        try (
                //用缓冲字符输出流
                BufferedWriter bw = new BufferedWriter(new FileWriter("Day10Properties-Xml-Log-App/src/book.xml"));
                ){
            bw.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
